package action.produit;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

import service.securite.DroitsAcces;
import action.general.NotreServlet;
import bdd.BddCommandeInsert;
import bean.commande.Commande;
import bean.produit.Panier;


public class PaiementAction extends NotreServlet {
	private static final long serialVersionUID = -9031835013975721017L;


	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	public ActionForward execute(final ActionMapping pMapping,
			ActionForm pForm, final HttpServletRequest pRequete,
			final HttpServletResponse pReponse) {
		
		ActionErrors errors = new ActionErrors();
		super.execute(pMapping,pForm,pRequete,pReponse);

		if (!DroitsAcces.isConnecte(pRequete)) {
			errors.add("errors",new ActionMessage("errors.droit"));
			saveErrors(pRequete,errors); 
			return (new ActionForward(pMapping.getInput()));
		}

		HttpSession session = pRequete.getSession();
		Panier panier = (Panier)session.getAttribute("panier");

		//On traite le formulaire suivant le fait que ce soit un client standard ou un compte de service.
		try {
			if (DroitsAcces.isConnecteClientStandard(pRequete)) {
				BddCommandeInsert.insertCommande(Commande.genererNumeroFactureCommande(), 
						/*ligneCredit*/null, 
						new Integer((String)session.getAttribute("id_compte")).intValue(), 
						/*id_adresseLivraison*/null, /*id_adresseFacturation*/null, 
						/*id_typePaiement*/new Integer(pRequete.getParameter("id_typePaiement")).intValue(), 
						/*id_typeLivraison*/null, panier);
			}
			else if (DroitsAcces.isConnecteCompteDeService(pRequete)) {
				BddCommandeInsert.insertCommande(Commande.genererNumeroFactureCommande(), 
						pRequete.getParameter("ligneCredit"), 
						new Integer((String)session.getAttribute("id_compte")).intValue(), 
						/*id_adresseLivraison*/null, /*id_adresseFacturation*/null, 
						/*id_typePaiement*/4, 
						/*id_typeLivraison*/null, panier);
			}
		} catch (Exception e) {
			errors.add("errors",new ActionMessage("errors.dynamic","Erreur lors de l'enregistrement."));
			saveErrors(pRequete,errors); 
			return (new ActionForward(pMapping.getInput()));
		}
		return pMapping.findForward("success");
	}
}
